package cz.data.domain.metadata.service;

import cz.data.common.mybatis.BaseService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cz.data.domain.metadata.model.dto.MetadataColumnDto;
import cz.data.domain.metadata.model.entity.MetadataColumnEntity;
import cz.data.domain.metadata.model.query.MetadataColumnQuery;
import cz.data.domain.metadata.model.vo.MetadataTreeVo;

import java.util.List;

public interface MetadataColumnService extends BaseService<MetadataColumnEntity> {

    MetadataColumnEntity saveMetadataColumn(MetadataColumnDto metadataColumn);

    MetadataColumnEntity updateMetadataColumn(MetadataColumnDto metadataColumn);

    MetadataColumnEntity getMetadataColumnById(String id);

    void deleteMetadataColumnById(String id);

    void deleteMetadataColumnBatch(List<String> ids);

    void deleteMetadataColumnByTableId(String id);

    List<MetadataTreeVo> getDataMetadataTree(String level, MetadataColumnQuery metadataColumnQuery);

    List<MetadataColumnEntity> getDataMetadataColumnList(MetadataColumnQuery metadataColumnQuery);

    <E extends IPage<MetadataColumnEntity>> E pageWithAuth(E page, Wrapper<MetadataColumnEntity> queryWrapper);

    List<MetadataColumnEntity> getMetadataColumnByTableId(String tableId);

    MetadataColumnEntity getMetadataColumnByTableIdAndColumnName(String table, String column);
}
